<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
require_once 'evento.php';
require_once 'conexion.php';

class PersistenciaEvento {

    private static $instance = false;

    public static function getInstance() {
        if (!self::$instance instanceof self) {
            self::$instance = new self;
        }
        return self::$instance;
    }

    public function crearEvento($datos) {
        try {
//            var_dump($datos);
            $db = Conexion::getInstance();
            $aux = '0';
            $x = array('1', $datos[4]);
            $z = $this->traerEvento($x);
            require_once 'Modelo/persistenciaAuto.php';
//            var_dump($z);
            $w = array($datos[3]);
            $auto = PersistenciaAuto::getInstance()->traeraAuto($w);
//            var_dump($auto);
            if (count($auto) != 0) {
                if (count($z) == 0) {
                    if ($datos[2] != 'Salida') {
                        $x = array('2', $datos[3]);
                        $z = $this->traerEvento($x);
//                        var_dump($z);
                        if (count($z) > 0) {
                            if ((count($z) % 2) == 0 && $z[0]->tipo_evento == 'Salida') {
                                $sentencia = "INSERT INTO evento (hora,fecha,tipo_evento,idauto,idcochera) VALUES('" . $datos[0] . "','" . $datos[1] . "','" . $datos[2] . "','" . $datos[3] . "','" . $datos[4] . "')";
                                $db->consulta($sentencia);
                                $aux = '1';
                            } else {
                                $aux = '4';
                            }
                        } else {
                            
                            $sentencia = "INSERT INTO evento (hora,fecha,tipo_evento,idauto,idcochera) VALUES('" . $datos[0] . "','" . $datos[1] . "','" . $datos[2] . "','" . $datos[3] . "','" . $datos[4] . "')";
                            echo $sentencia;
                            $db->consulta($sentencia);
                            $aux = '1';
                        }
                    } else {
                        $x = array('2', $datos[3]);
                        $z = $this->traerEvento($x);
                        if (count($z) != 0) {
                            $aux = '3';
                        } else {
                            $aux = '5';
                        }
                    }
                } elseif ($z[0]->tipo_evento != $datos[2]) {
                    if ($z[0]->tipo_evento == 'Salida') {
                        $sentencia = "INSERT INTO evento (hora,fecha,tipo_evento,idauto,idcochera) VALUES('" . $datos[0] . "','" . $datos[1] . "','" . $datos[2] . "','" . $datos[3] . "','" . $datos[4] . "')";
                        $db->consulta($sentencia);
                        $aux = '1';
                    } else {
                        $x = array('2', $datos[3]);
                        $z = $this->traerEvento($x);
//                        var_dump($z);
                        if (count($z) != 0) {
                            if ((count($z) % 2) == 0 && $z[0]->tipo_evento == 'Salida') {
                                $sentencia = "INSERT INTO evento (hora,fecha,tipo_evento,idauto,idcochera) VALUES('" . $datos[0] . "','" . $datos[1] . "','" . $datos[2] . "','" . $datos[3] . "','" . $datos[4] . "')";
                                $db->consulta($sentencia);
                                $aux = '1';
                            } elseif ((count($z) % 2) != 0 && $z[0]->tipo_evento == 'Entrada') {
                                $sentencia = "INSERT INTO evento (hora,fecha,tipo_evento,idauto,idcochera) VALUES('" . $datos[0] . "','" . $datos[1] . "','" . $datos[2] . "','" . $datos[3] . "','" . $datos[4] . "')";
                                $db->consulta($sentencia);
                                $aux = '1';
                            } else {
                                $aux = '4';
                            }
                        } else {
                            $aux = '5';
                        }
                    }
                } else {
                    $aux = '2';
                }
            } else {
                $aux = '6';
            }


            return $aux;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function armarEvento($datos) {
        try {
            require_once 'persistenciaAuto.php';
            $auto = PersistenciaAuto::getInstance();
            $eventos = array();
            if (!is_null($datos)) {
                foreach ($datos as $evento) {
                    $eve = new Evento(null);
                    $eve->idevento = $evento[0];
                    $eve->hora = $evento[1];
                    $eve->fecha = $evento[2];
                    $eve->tipo_evento = $evento[3];
                    $w = array($evento[4]);
                    $eve->auto = $auto->traeraAuto($w);
                    array_push($eventos, $eve);
                }
            }
            return $eventos;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function traerEvento($datos) {
        try {
            $db = Conexion::getInstance();
            if ($datos == '') {
                $sentencia = "select * from evento ";
            } else {
                if ($datos[0] == '1') {
                    $sentencia = "select * from evento where idcochera='" . $datos[1] . "' order by idevento desc limit 1";
                } else {
                    $sentencia = "select * from evento where idauto='" . $datos[1] . "' order by idevento desc limit 1";
                }
            }
            return $this->armarEvento($db->consulta($sentencia));
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function actualizarEvento($datos) {
        try {
            $db = Conexion::getInstance();
            $sentencia = "UPDATE evento SET hora='" . $datos[1] . "',fecha='" . $datos[2] . "',tipo_evento=" . $datos[3] . ",idauto=" . $datos[4] . ",idcochera='" . $datos[5] . "', WHERE idevento=" . $datos[0];
            $db->consulta($sentencia);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function eliminarEvento($datos) {
        try {
            $db = Conexion::getInstance();
            $sentencia = "delete from evento where idevento=" . $datos;
            $db->consulta($sentencia);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function reportarEventos($datos) {
        try {
            $db = Conexion::getInstance();
            if ($datos[0] == '1') {
                $sentencia = "select hora, fecha, tipo_evento, idauto, idcochera from evento where fecha between'" . $datos[1] . "' and '" . $datos[2] . "'";
            } elseif ($datos[0] == '2') {
                $sentencia = "select  hora, fecha, tipo_evento, idauto, idcochera from evento where fecha between'" . $datos[1] . "' and '" . $datos[2] . "' and idauto='" . $datos[3] . "'";
            } else {
                $sentencia = "select  hora, fecha, tipo_evento, idauto, idcochera from evento where fecha between'" . $datos[1] . "' and '" . $datos[2] . "' and idcochera='" . $datos[4] . "'";
            }
//            echo ($sentencia);
            return $db->consulta($sentencia);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

}

?>
